/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import util.Dao;
import java.sql.SQLException;
import java.util.ArrayList;
import modelo.NomeDocumento;
import util.Conexao;

/**
 * @author bruno
 */
public class NomeDocumentoDao extends Dao<NomeDocumento> {

    public NomeDocumentoDao() {
        super(new Conexao("Aurea", "sa", "sa", Conexao.sqlServerDriver));
    }

//    public boolean gravar(NomeDocumento nomeDocumento) {
//        boolean estado = false;
//        try {
//            conexao.iniciar();
//            conexao.prepararInstrucao("INSERT INTO "
//                    + "tbNomeDocumento(abreviacao,tipo,designacao,descricao) "
//                    + "VALUES ( ?, ?, ?, ?) "
//                    + "SELECT SCOPE_IDENTITY() AS id");
//
//            conexao.getStatement().setString(1, nomeDocumento.getAbreviacao());
//            conexao.getStatement().setString(2, nomeDocumento.getTipo());
//            conexao.getStatement().setString(3, nomeDocumento.getDesignacao());
//            conexao.getStatement().setString(4, nomeDocumento.getDescricao());
//
//            if (conexao.executarInstrucao() && conexao.getStatement().getMoreResults()) {
//
//                conexao.getStatement().getResultSet().next();
//                nomeDocumento.setId(conexao.getStatement().getResultSet().getInt("id"));
//                estado = true;
//            }
//        } catch (SQLException ex) {
//            System.err.println("Erro ao gravar nome do documento : " + ex.getMessage());
//        } finally { 
//            conexao.fecharTudo();
//            return estado;
//        }
//    }
//    @Override
//    public NomeDocumento ler(int id) {
//
//        NomeDocumento nomeDocumento = null;
//
//        try {
//            conexao.iniciar();
//            conexao.prepararInstrucao("SELECT * "
//                    + "FROM tbNomeDocumento "
//                    + "WHERE idNomeDocumento = ? ");
//
//            conexao.getStatement().setInt(1, id);
//
//            if (conexao.executarInstrucao()) {
//                conexao.getResultSet().next();
//                nomeDocumento = new NomeDocumento();
//                nomeDocumento.setId(id);
//                nomeDocumento.setAbreviacao(conexao.getResultSet().getString("abreviacao"));
//                nomeDocumento.setTipo(conexao.getResultSet().getString("tipo"));
//                nomeDocumento.setDesignacao(conexao.getResultSet().getString("designacao"));
//                nomeDocumento.setDescricao(conexao.getResultSet().getString("descricao"));
//            }
//
//        } catch (SQLException ex) {
//            Logger.getLogger(NomeDocumentoDao.class.getName()).log(Level.SEVERE, null, ex);
//            ex.printStackTrace();
//        } finally {
//            conexao.fecharTudo();
//            return nomeDocumento;
//        }
//    }
//    public ArrayList<NomeDocumento> lerTodos() {
//
//        ArrayList<NomeDocumento> nds = new ArrayList<NomeDocumento>();
//        try {
//            conexao.iniciar();
//
//            if (conexao.executarInstrucao("SELECT * FROM tbNomeDocumento")) {
//                while (conexao.getResultSet().next()) {
//                    NomeDocumento nd = new NomeDocumento();
//                    nd.setId(conexao.getResultSet().getInt("idNomeDocumento"));
//                    nd.setAbreviacao(conexao.getResultSet().getString("abreviacao"));
//                    nd.setTipo(conexao.getResultSet().getString("tipo"));
//                    nd.setDesignacao(conexao.getResultSet().getString("designacao"));
//                    nd.setDescricao(conexao.getResultSet().getString("descricao"));
//                    nds.add(nd);
//                }
//            }
//
//        } catch (SQLException ex) {
//            Logger.getLogger(NomeDocumentoDao.class.getName()).log(Level.SEVERE, null, ex);
//        } finally {
//            conexao.fecharTudo();
//            return nds;
//        }
//    }
    @Override
    public void definirParametrosGravar() throws SQLException {
        conexao.getStatement().setString(1, modelo.getAbreviacao());
        conexao.getStatement().setString(2, modelo.getTipo());
        conexao.getStatement().setString(3, modelo.getDesignacao());
        conexao.getStatement().setString(4, modelo.getDescricao());
    }

    @Override
    public void definirParametrosLer() throws SQLException {
        modelo.setAbreviacao(conexao.getResultSet().getString("abreviacao"));
        modelo.setTipo(conexao.getResultSet().getString("tipo"));
        modelo.setDesignacao(conexao.getResultSet().getString("designacao"));
        modelo.setDescricao(conexao.getResultSet().getString("descricao"));
//        modelo.setDocumento(lerTodos(modelo.getId()));
    }

    @Override
    public boolean gravar(NomeDocumento nomeDocumento) {
        return super.gravarModelo("INSERT INTO tbNomeDocumento(abreviacao,tipo,designacao,descricao) VALUES ( ?, ?, ?, ?) ", nomeDocumento);
    }

    @Override
    public NomeDocumento ler(int id) {
        modelo = new NomeDocumento();// obrigatorio instanciar o modelo
        return super.lerModelo("SELECT * FROM tbNomeDocumento WHERE idNomeDocumento = ? ", id);
    }

    @Override
    public ArrayList<NomeDocumento> lerTodos() {
        return lerTodos("SELECT * FROM tbNomeDocumento");
    }

    @Override
    protected NomeDocumento novoModelo() {
        return new NomeDocumento();
    }

//     public ArrayList<Documento> lerTodos(int id) {
//        return lerTodos("SELECT * FROM tbDocumento WHERE NomeDocumento= " + id);
//    }
    
    public ArrayList<NomeDocumento> lerTodosPorTipo(String tipo) {
        return lerTodos("SELECT * FROM tbNomeDocumento where tipo="+"'"+tipo+"'");
      
    }
}
